package com.hb.trade.client.project;

import com.hb.core.pojo.parent.PageResult;
import com.hb.core.pojo.project.deal.dto.BidCandidateDTO;
import com.hb.core.pojo.project.deal.dto.BidCandidateSupplierDTO;
import com.hb.core.pojo.project.deal.entity.BidCandidateSupplier;
import org.fzzn.core.model.msg.Message;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * 定标阶段Feign客户端
 *
 * @author Lix1ang
 * @date 2021-12-24 15:16:47
 */
@FeignClient("hb-project")
public interface DealClient {

    /**
     * 根据项目Id查询候选人公示列表
     *
     * @param bidCandidateDTO
     * @return
     */
    @PostMapping("/candidate/getCandidateByProjectId")
    Message<PageResult> getCandidateByProjectId(@RequestBody BidCandidateDTO bidCandidateDTO);

    /**
     * 根据标段id查询候选人公示
     *
     * @param bidCandidateDTO
     * @return
     */
    @PostMapping("/candidate/getCandidateBySectionId")
    Message<List<BidCandidateDTO>> getCandidateBySectionId(@RequestBody BidCandidateDTO bidCandidateDTO);

    /**
     * 获取候选人公示详情  --根据主键Id
     *
     * @param bidCandidateDTO
     * @return
     */
    @PostMapping("/candidate/getCandidateDetail")
    Message<BidCandidateDTO> getCandidateDetail(@RequestBody BidCandidateDTO bidCandidateDTO);

    /**
     * 新增或者修改中标候选人公示
     *
     * @param bidCandidateDTO
     * @return
     */
    @PostMapping("/candidate/saveOrUpdateCandidate")
    Message saveOrUpdateCandidate(@RequestBody BidCandidateDTO bidCandidateDTO);

    /**
     * 候选人发布
     *
     * @param bidCandidateDTO  (id:主键Id)
     * @return
     */
    @PostMapping("/candidate/publishCandidate")
    Message publishCandidate(@RequestBody BidCandidateDTO bidCandidateDTO);

    /**
     * 获取未被关联的标段
     *
     * @param bidCandidateDTO (根据项目Id跟候选人公示Id)
     * @return
     */
    @PostMapping("/candidate/getSectionNotSelected")
    Message getSectionNotSelected(@RequestBody BidCandidateDTO bidCandidateDTO);

    /**
     * 获取中标候选人公示列表（从开标记录表里拉取投标人信息）
     *
     * @param bidCandidateSupplier
     * @return
     */
    @PostMapping("/candidate/getCandidate")
    Message<PageResult> getCandidate(@RequestBody BidCandidateSupplier bidCandidateSupplier);

    /**
     * 根据候选人公示查询关联标段列表
     *
     * @param bidCandidateDTO
     * @return
     */
    @PostMapping("/candidate/listSectionByCandidateId")
    Message<PageResult> listSectionByCandidateId(@RequestBody BidCandidateDTO bidCandidateDTO);

    /**
     *
     * @Description:查询标段的中标候选人公示最后一次中标人候选人列表
     * @Author: zhongdl
     * @Date:2022/1/6 9:15
     * @param bidCandidateSupplierDTO:
     * @return: {@link Message< PageResult< BidCandidateSupplierDTO>> }
     **/
    @PostMapping("/candidate/pageCandidate")
    Message<PageResult<BidCandidateSupplierDTO>> pageCandidate(@RequestBody BidCandidateSupplierDTO bidCandidateSupplierDTO);
    /**
     *
     * @Description: 查询需要推送的中标候选人公示列表
     * @Author: zhongdl
     * @Date:2022/2/23 16:20
     * @param bidCandidateSupplierDTO:
     * @return: {@link Message< List< BidCandidateDTO>> }
     **/
    @PostMapping("/candidate/listPushBidCandidateDTO")
    Message<List<BidCandidateDTO>> listPushBidCandidateDTO(@RequestBody BidCandidateSupplierDTO bidCandidateSupplierDTO);

}
